// 处理axios并封装一些方法
import axios from 'axios';
import qs from 'qs';
import {baseURL} from './config';
import {getToken,removeToken} from './auth.js';
import router from '@/router';
import { Notify } from 'vant';

const service = axios.create({
	timeout:10000,
	baseURL
});

// 请求拦截器
// service.interceptors.request.use()
service.interceptors.request.use(config=>{
	// 拦住请求，给每个请求头部设置身份认证
	if(getToken()){
		config.headers['Authorization']=getToken();
	}
	return config;
	},
	error=>{
		return Promise.reject(error);
	});

// 响应拦截器
service.interceptors.response.use(response=>{
	// 处理数据的拆分,res就是后台给的数据
	const {data:res}=response;
	// 状态判断
	if(res.status!==200){
		if(res.status===500){
			// 后台服务异常
			Notify({ type: 'danger', message: res.message});
		}
		if(res.status===401){
			// token异常,那就移除token
			removeToken();
			// 手动设置路由跳转到登录页
			router.push('/login');
		}
		// 弹框提示
		// alert('错误');
		return Promise.reject(new Error(res.message || 'Error'));
	}
	else{
		return res;
	}
	
},error=>{
	// 弹框提示
	Notify({ type: 'danger', message: error.message});
	return Promise.reject(error);
});

// get请求
export function get(url,data){
	return service.get(url,{params:data});
}
// post请求发送表单数据
export function post(url,data){
	return service.post(url,qs.stringify(data));
}
// post请求发送json数据
export function postJSON(url,data){
	return service.post(url,data);
}

export default service;